<?php
/**
 * Description of Tfacturaci
 *
 * @author maospina
 */

include_once 'EstadoHistoria.php';

class Trazafacturacion {
    //put your code here
    
    private $oid;
    private $adningreso;
    private $tfestadoac;
    
    function __construct($oid, $adningreso, $tfestadoac) {
        $this->oid = $oid;
        $this->adningreso = $adningreso;
        $this->tfestadoac = $tfestadoac;
    }
    
    function getOid() {
        return $this->oid;
    }

    function getAdningreso() {
        return $this->adningreso;
    }

    function getTfestadoac() {
        return $this->tfestadoac;
    }

    function setOid($oid) {
        $this->oid = $oid;
    }

    function setAdningreso($adningreso) {
        $this->adningreso = $adningreso;
    }

    function setTfestadoac($tfestadoac) {
        $this->tfestadoac = $tfestadoac;
    }

    
    function ReasignarHistoria($Ingreso){
        
        include_once 'conexion/Conexion.php';
        $con = new Conexion();
        
        $select = "SELECT TF.OID as OIDFAC,ADN.AINCONSEC,GPA.PACNUMDOC,TF.ESTACTHIS,USUACTHIS,PERACTHIS,OIDESTADO.OIDESTA,
                            LTRIM(RTRIM(GPA.PACPRINOM))+' '+LTRIM(RTRIM(GPA.PACSEGNOM))+' '+LTRIM(RTRIM(GPA.PACPRIAPE))+' '+
                            LTRIM(RTRIM(GPA.PACSEGAPE)) AS PACIENTE,EPS.GDENOMBRE,ADN.AINFECING AS FECHA_INGRESO,
                            CASE WHEN ADN2.ADEFECSAL IS NULL THEN NULL ELSE ADN2.ADEFECSAL END AS FECHA_EGRESO,
                            PERFIL.OIDPERFIL,PERFIL.COD,PERFIL.TFTIPPERFIL,PERFIL.DESCRIPCION,PERFIL.ESTENTHIS,PERFIL.FECENTHIS,PERFIL.ESTRECHIS,PERFIL.FECRECHIS,
                            PERFIL.USUARIO_ENTREGA,PERFIL.USUARIO_RECIBE,PERFIL.USUARIO_REGENT,PERFIL.USUARIO_REGREC,
                            USUARIO_EGRESO.USUDESCRI AS USUARIO_EGRESO,
                            CASE ADN.AINESTADO WHEN 0 THEN 'REGISTRADO' WHEN 1 THEN 'FACTURADO' WHEN 2 THEN 'ANULADO'
                                               WHEN 3 THEN 'BLOQUEADO' WHEN 4 THEN 'CERRADO' END AS AINESTADO,
                            CAMA_EGRESO.CAMA,PERFIL.ESTADOPERFIL
                    FROM TFACTURACI AS TF LEFT OUTER JOIN ".$con->getReal()."..ADNINGRESO AS ADN ON TF.ADNINGRESO = ADN.AINCONSEC
                                           LEFT OUTER JOIN ".$con->getReal()."..GENPACIEN AS GPA ON ADN.GENPACIEN = GPA.OID
                                           LEFT OUTER JOIN ".$con->getReal()."..GENDETCON AS EPS ON ADN.GENDETCON = EPS.OID
                                           LEFT OUTER JOIN ".$con->getReal()."..ADNEGRESO AS ADN2 ON ADN.OID = ADN2.ADNINGRESO
                                           LEFT OUTER JOIN ".$con->getReal()."..GENUSUARIO AS USUARIO_EGRESO ON ADN2.GEENUSUARIO = USUARIO_EGRESO.OID
                           OUTER APPLY(SELECT TFESTADOH.OID AS ESTADOPERFIL,TFESTADOH.OID AS COD,TFESTADOH.TFTIPPERFIL,TFTIPERFIL.OID AS OIDPERFIL,TFTIPERFIL.DESCRIPCION,TFESTADOH.ESTENTHIS,TFESTADOH.FECENTHIS,
                                              TFESTADOH.ESTRECHIS,TFESTADOH.FECRECHIS,LTRIM(RTRIM(USU.usu_nombres)) +' '+ LTRIM(RTRIM(USU.usu_apellidos)) AS USUARIO_ENTREGA,
                                              USU.usu_oid AS COD1,USU2.usu_oid AS COD2,USU3.usu_oid AS COD3,USU4.usu_oid AS COD4,
                                              LTRIM(RTRIM(USU2.usu_nombres)) +' '+ LTRIM(RTRIM(USU2.usu_apellidos)) AS USUARIO_RECIBE,
                                              LTRIM(RTRIM(USU3.usu_nombres)) +' '+ LTRIM(RTRIM(USU3.usu_apellidos)) AS USUARIO_REGENT,
                                              LTRIM(RTRIM(USU4.usu_nombres)) +' '+ LTRIM(RTRIM(USU4.usu_apellidos)) AS USUARIO_REGREC
                                       FROM TFESTADOH LEFT OUTER JOIN TFTIPERFIL ON TFESTADOH.TFTIPPERFIL = TFTIPERFIL.OID
                                                      LEFT OUTER JOIN usuario AS USU ON TFESTADOH.USUENTHIS = USU.usu_oid
                                                      LEFT OUTER JOIN usuario AS USU2 ON TFESTADOH.USURECHIS = USU2.usu_oid
                                                      LEFT OUTER JOIN usuario AS USU3 ON TFESTADOH.USUREGENT = USU3.usu_oid
                                                      LEFT OUTER JOIN usuario AS USU4 ON TFESTADOH.USUREGREC = USU4.usu_oid
                                       WHERE TFESTADOH.TFACTURACION = TF.OID)AS PERFIL
                            OUTER APPLY(SELECT TOP 1 OID AS OIDESTA
                                        FROM TFESTADOH
                                        WHERE TFACTURACION = TF.OID
                                        ORDER BY OID DESC)AS OIDESTADO
                            OUTER APPLY(SELECT TOP 1 HCACODIGO AS CAMA 
                                        FROM ".$con->getReal()."..HPNESTANC AS A LEFT OUTER JOIN ".$con->getReal()."..HPNDEFCAM AS B ON A.HPNDEFCAM = B.OID
                                        WHERE A.ADNINGRES = ADN.OID 
                                        ORDER BY A.HESFECSAL DESC) AS CAMA_EGRESO
                WHERE TF.ADNINGRESO = ".$Ingreso.""
              . "ORDER BY TF.FECREGHIS desc,PERFIL.ESTADOPERFIL asc";
        $res = $con->query($select);
        
        while($res2 = mssql_fetch_array($res)){
            $listas[] = array_map(utf8_encode,$res2); 
        }
        
        print_r(json_encode($listas));
        
        $con->cerrarConexion();
        
    }
            
    function historiaC($tc2,$f1,$f2){
        
        session_start();
        include_once 'conexion/Conexion.php';
        $con = new Conexion();
        
        $tc = $tc2;
        
        $consulta = "";
        
        if($tc == 1){
            $fecha = date('Y-m-d 00:00:00.000'); 
            $consulta = "'".$fecha."' AND GETDATE()";
        }else if($tc == 2){
            
            $fecha1 = date('Y-m-d 00:00:00.000',strtotime($f1));
            $fecha2 = date('Y-m-d 23:59:59.999',strtotime($f2));
            
            $consulta = "'".$fecha1."' and '".$fecha2."'";
        }
        
        if($_SESSION['usuario'] == 21){
            
            $ValidarUsuario = "";
        }
        else{
            $ValidarUsuario = "(PERFIL.COD1 = '".$_SESSION['usuario']."' OR PERFIL.COD2 = '".$_SESSION['usuario']."' OR TF.USUACTHIS = '".$_SESSION['usuario']."' ) AND";
        }
        
        
        $select = "SELECT TF.OID as OIDFAC,ADN.AINCONSEC,GPA.PACNUMDOC,TF.ESTACTHIS,USUACTHIS,PERACTHIS,OIDESTADO.OIDESTA,
                            LTRIM(RTRIM(GPA.PACPRINOM))+' '+LTRIM(RTRIM(GPA.PACSEGNOM))+' '+LTRIM(RTRIM(GPA.PACPRIAPE))+' '+
                            LTRIM(RTRIM(GPA.PACSEGAPE)) AS PACIENTE,EPS.GDENOMBRE,ADN.AINFECING AS FECHA_INGRESO,
                            CASE WHEN ADN2.ADEFECSAL IS NULL THEN NULL ELSE ADN2.ADEFECSAL END AS FECHA_EGRESO,
                            PERFIL.OIDPERFIL,PERFIL.COD,PERFIL.TFTIPPERFIL,PERFIL.DESCRIPCION,PERFIL.ESTENTHIS,PERFIL.FECENTHIS,PERFIL.ESTRECHIS,PERFIL.FECRECHIS,
                            PERFIL.USUARIO_ENTREGA,PERFIL.USUARIO_RECIBE,PERFIL.USUARIO_REGENT,PERFIL.USUARIO_REGREC,
                            USUARIO_EGRESO.USUDESCRI AS USUARIO_EGRESO,
                            CASE ADN.AINESTADO WHEN 0 THEN 'REGISTRADO' WHEN 1 THEN 'FACTURADO' WHEN 2 THEN 'ANULADO'
                                               WHEN 3 THEN 'BLOQUEADO' WHEN 4 THEN 'CERRADO' END AS AINESTADO,
                            CAMA_EGRESO.CAMA,PERFIL.OIDUSUARIO_ENTREGA  
                    FROM TFACTURACI AS TF LEFT OUTER JOIN ".$con->getReal()."..ADNINGRESO AS ADN ON TF.ADNINGRESO = ADN.AINCONSEC
                                           LEFT OUTER JOIN ".$con->getReal()."..GENPACIEN AS GPA ON ADN.GENPACIEN = GPA.OID
                                           LEFT OUTER JOIN ".$con->getReal()."..GENDETCON AS EPS ON ADN.GENDETCON = EPS.OID
                                           LEFT OUTER JOIN ".$con->getReal()."..ADNEGRESO AS ADN2 ON ADN.OID = ADN2.ADNINGRESO
                                           LEFT OUTER JOIN ".$con->getReal()."..GENUSUARIO AS USUARIO_EGRESO ON ADN2.GEENUSUARIO = USUARIO_EGRESO.OID
                           OUTER APPLY(SELECT TFESTADOH.OID AS ESTADOPERFIL,TFESTADOH.OID AS COD,TFESTADOH.TFTIPPERFIL,TFTIPERFIL.OID AS OIDPERFIL,TFTIPERFIL.DESCRIPCION,TFESTADOH.ESTENTHIS,TFESTADOH.FECENTHIS,
                                              TFESTADOH.ESTRECHIS,TFESTADOH.FECRECHIS,LTRIM(RTRIM(USU.usu_nombres)) +' '+ LTRIM(RTRIM(USU.usu_apellidos)) AS USUARIO_ENTREGA,USU.usu_oid AS OIDUSUARIO_ENTREGA,
                                              USU.usu_oid AS COD1,USU2.usu_oid AS COD2,USU3.usu_oid AS COD3,USU4.usu_oid AS COD4,
                                              LTRIM(RTRIM(USU2.usu_nombres)) +' '+ LTRIM(RTRIM(USU2.usu_apellidos)) AS USUARIO_RECIBE,
                                              LTRIM(RTRIM(USU3.usu_nombres)) +' '+ LTRIM(RTRIM(USU3.usu_apellidos)) AS USUARIO_REGENT,
                                              LTRIM(RTRIM(USU4.usu_nombres)) +' '+ LTRIM(RTRIM(USU4.usu_apellidos)) AS USUARIO_REGREC
                                       FROM TFESTADOH LEFT OUTER JOIN TFTIPERFIL ON TFESTADOH.TFTIPPERFIL = TFTIPERFIL.OID
                                                      LEFT OUTER JOIN usuario AS USU ON TFESTADOH.USUENTHIS = USU.usu_oid
                                                      LEFT OUTER JOIN usuario AS USU2 ON TFESTADOH.USURECHIS = USU2.usu_oid
                                                      LEFT OUTER JOIN usuario AS USU3 ON TFESTADOH.USUREGENT = USU3.usu_oid
                                                      LEFT OUTER JOIN usuario AS USU4 ON TFESTADOH.USUREGREC = USU4.usu_oid
                                       WHERE TFESTADOH.TFACTURACION = TF.OID)AS PERFIL
                            OUTER APPLY(SELECT TOP 1 OID AS OIDESTA
                                        FROM TFESTADOH
                                        WHERE TFACTURACION = TF.OID
                                        ORDER BY OID DESC)AS OIDESTADO
                            OUTER APPLY(SELECT TOP 1 HCACODIGO AS CAMA 
                                        FROM ".$con->getReal()."..HPNESTANC AS A LEFT OUTER JOIN ".$con->getReal()."..HPNDEFCAM AS B ON A.HPNDEFCAM = B.OID
                                        WHERE A.ADNINGRES = ADN.OID 
                                        ORDER BY A.HESFECSAL DESC) AS CAMA_EGRESO
                WHERE TF.USUACTHIS = ".$_SESSION['usuario'].""
              . "ORDER BY TF.FECREGHIS desc,PERFIL.ESTADOPERFIL asc";
        $res = $con->query($select);
        
        while($res2 = mssql_fetch_array($res)){
            $listas[] = array_map(utf8_encode,$res2); 
        }
        
        print_r(json_encode($listas));
        $con->cerrarConexion();
        
    }
    
    function crearTrazabilidad($estado,$perfil,$tpe,$usuario,$oideh,$oidfac){
        
        session_start();
        include_once 'conexion/Conexion.php';
        $con = new Conexion();
        
        /*validamos si el la historia ya cuenta con un registro o es un registro nuevo*/
        $count = "SELECT COUNT(*) AS RESU
                  FROM TFACTURACI
                  WHERE ADNINGRESO =".$this->adningreso;
        $res = $con->query($count);

        $r = mssql_result($res, 0, 0);

        if($r == 0){
            
            /*se valida si la variable de sesion esta activa*/
            if($_SESSION['usuario'] != 0){
                
                //Se valida el estado para darle el valor al usuario que tiene la hc
                if($estado == 1){
                    
                    $UsuarioFinal = $usuario;
                    
                }else if($estado == 2){
                    
                    $UsuarioFinal = $_SESSION['usuario'];
                    
                }
                
                $insert = "INSERT INTO TFACTURACI(ADNINGRESO,FECREGHIS,ESTACTHIS,USUACTHIS,PERACTHIS)VALUES('".$this->adningreso."',GETDATE(),'".$estado."','".$UsuarioFinal."','".$perfil."')";
                $con->query($insert);

                //se extrae el oid de la programcion y guardar historial
                $oidtf = "SELECT SCOPE_IDENTITY () oid";

                $oidtf2 = $con->query($oidtf);


                while ($resp2 = mssql_fetch_array($oidtf2)){
                    $oid = $resp2['oid'];
                }

                $tfacturacion = $oid;
                
                $estadoh = new EstadoHistoria("", $tfacturacion, $perfil, $estado, "", "", "", $usuario, "", "", ""); 
                $estadoh->crearEstado();
                
            }else{
                
                print_r(json_encode(array('respuesta'=>'0')));
                
            }

        }else if($r == 1){
            
            /*se valida el tipo de entrada (1-> primera vez,2->si ya se cuenta con un registro)*/
            if($tpe == 1){
                
                print_r(json_encode(array('respuesta'=>'2')));
                
            }else if($tpe == 2){
                
                if($_SESSION['usuario'] != 0){
                    
                    $estadoh = new EstadoHistoria($tfacturacion, $perfil, "", "", "", "", "", "", "", "", ""); 
                    $estadoh->editarEstado($usuario,$estado,$oideh,$oidfac,$perfil);
                    
                }else{
                    
                    print_r(json_encode(array('respuesta'=>'0')));
                    
                }
            }

        }
        
        $con->cerrarConexion();
        
    }
    
    function EliminarEstado($OidEstado,$estado,$perfil,$usuario){
        
        include_once 'conexion/Conexion.php';
        $con = new Conexion();
        
        $Select = "SELECT TFACTURACION FROM TFESTADOH WHERE OID = ".$OidEstado;
        $Respuesta = $con->query($Select);
        
        while ($Respuesta2 = mssql_fetch_array($Respuesta)){
            
            $OidTFacturacion = $Respuesta2['TFACTURACION'];
            
        }
        
        //Se  actualiza el registro de la hc
        $updateh = "UPDATE TFACTURACI
                   SET ESTACTHIS = '".$estado."',
                      USUACTHIS = '".$usuario."',
                      PERACTHIS = '".$perfil."'
                   WHERE OID = ".$OidTFacturacion;
        $con->query($updateh); 
        
        //Se crea un nuevo estado 
        
        $select2 = "INSERT INTO TFESTADOH(TFACTURACION,TFTIPPERFIL,ESTENTHIS,FECENTHIS,ESTRECHIS,FECRECHIS,USUENTHIS,USURECHIS,USUREGENT,USUREGREC)VALUES('".$OidTFacturacion."','".$perfil."','0',NULL,'0',NULL,'0','".$usuario."','0','0')";
        $con->query($select2);
        
        
        $Delete = "DELETE FROM TFESTADOH WHERE OID = ".$OidEstado;
        $con->query($Delete);
        
        echo 'jdshfjkdfghjkdf';
        
        $con->cerrarConexion();
        
    }
    
    function CargarReporteTraza($tc2,$f1,$f2){
        
        session_start();
        include_once 'conexion/Conexion.php';
        $con = new Conexion();
        
            
        $fecha1 = date('Y-m-d 00:00:00.000',strtotime($f1));
        $fecha2 = date('Y-m-d 23:59:59.999',strtotime($f2));

        $consulta = "'".$fecha1."' and '".$fecha2."'";
        
        $select = "SELECT TF.OID as OIDFAC,ADN.AINCONSEC,GPA.PACNUMDOC,TF.ESTACTHIS,USUACTHIS,PERACTHIS,OIDESTADO.OIDESTA,
                            LTRIM(RTRIM(GPA.PACPRINOM))+' '+LTRIM(RTRIM(GPA.PACSEGNOM))+' '+LTRIM(RTRIM(GPA.PACPRIAPE))+' '+
                            LTRIM(RTRIM(GPA.PACSEGAPE)) AS PACIENTE,EPS.GDENOMBRE,ADN.AINFECING AS FECHA_INGRESO,
                            CASE WHEN ADN2.ADEFECSAL IS NULL THEN NULL ELSE ADN2.ADEFECSAL END AS FECHA_EGRESO,
                            PERFIL.OIDPERFIL,PERFIL.COD,PERFIL.TFTIPPERFIL,PERFIL.DESCRIPCION,PERFIL.ESTENTHIS,PERFIL.FECENTHIS,PERFIL.ESTRECHIS,PERFIL.FECRECHIS,
                            PERFIL.USUARIO_ENTREGA,PERFIL.USUARIO_RECIBE,PERFIL.USUARIO_REGENT,PERFIL.USUARIO_REGREC,
                            USUARIO_EGRESO.USUDESCRI AS USUARIO_EGRESO,
                            CASE ADN.AINESTADO WHEN 0 THEN 'REGISTRADO' WHEN 1 THEN 'FACTURADO' WHEN 2 THEN 'ANULADO'
                                               WHEN 3 THEN 'BLOQUEADO' WHEN 4 THEN 'CERRADO' END AS AINESTADO,
                            CAMA_EGRESO.CAMA 
                    FROM TFACTURACI AS TF LEFT OUTER JOIN ".$con->getReal()."..ADNINGRESO AS ADN ON TF.ADNINGRESO = ADN.AINCONSEC
                                           LEFT OUTER JOIN ".$con->getReal()."..GENPACIEN AS GPA ON ADN.GENPACIEN = GPA.OID
                                           LEFT OUTER JOIN ".$con->getReal()."..GENDETCON AS EPS ON ADN.GENDETCON = EPS.OID
                                           LEFT OUTER JOIN ".$con->getReal()."..ADNEGRESO AS ADN2 ON ADN.OID = ADN2.ADNINGRESO
                                           LEFT OUTER JOIN ".$con->getReal()."..GENUSUARIO AS USUARIO_EGRESO ON ADN2.GEENUSUARIO = USUARIO_EGRESO.OID
                           OUTER APPLY(SELECT TFESTADOH.OID AS ESTADOPERFIL,TFESTADOH.OID AS COD,TFESTADOH.TFTIPPERFIL,TFTIPERFIL.OID AS OIDPERFIL,TFTIPERFIL.DESCRIPCION,TFESTADOH.ESTENTHIS,TFESTADOH.FECENTHIS,
                                              TFESTADOH.ESTRECHIS,TFESTADOH.FECRECHIS,LTRIM(RTRIM(USU.usu_nombres)) +' '+ LTRIM(RTRIM(USU.usu_apellidos)) AS USUARIO_ENTREGA,
                                              USU.usu_oid AS COD1,USU2.usu_oid AS COD2,USU3.usu_oid AS COD3,USU4.usu_oid AS COD4,
                                              LTRIM(RTRIM(USU2.usu_nombres)) +' '+ LTRIM(RTRIM(USU2.usu_apellidos)) AS USUARIO_RECIBE,
                                              LTRIM(RTRIM(USU3.usu_nombres)) +' '+ LTRIM(RTRIM(USU3.usu_apellidos)) AS USUARIO_REGENT,
                                              LTRIM(RTRIM(USU4.usu_nombres)) +' '+ LTRIM(RTRIM(USU4.usu_apellidos)) AS USUARIO_REGREC
                                       FROM TFESTADOH LEFT OUTER JOIN TFTIPERFIL ON TFESTADOH.TFTIPPERFIL = TFTIPERFIL.OID
                                                      LEFT OUTER JOIN usuario AS USU ON TFESTADOH.USUENTHIS = USU.usu_oid
                                                      LEFT OUTER JOIN usuario AS USU2 ON TFESTADOH.USURECHIS = USU2.usu_oid
                                                      LEFT OUTER JOIN usuario AS USU3 ON TFESTADOH.USUREGENT = USU3.usu_oid
                                                      LEFT OUTER JOIN usuario AS USU4 ON TFESTADOH.USUREGREC = USU4.usu_oid
                                       WHERE TFESTADOH.TFACTURACION = TF.OID)AS PERFIL
                            OUTER APPLY(SELECT TOP 1 OID AS OIDESTA
                                        FROM TFESTADOH
                                        WHERE TFACTURACION = TF.OID
                                        ORDER BY OID DESC)AS OIDESTADO
                            OUTER APPLY(SELECT TOP 1 HCACODIGO AS CAMA 
                                        FROM ".$con->getReal()."..HPNESTANC AS A LEFT OUTER JOIN ".$con->getReal()."..HPNDEFCAM AS B ON A.HPNDEFCAM = B.OID
                                        WHERE A.ADNINGRES = ADN.OID 
                                        ORDER BY A.HESFECSAL DESC) AS CAMA_EGRESO
                WHERE TF.FECREGHIS BETWEEN ".$consulta.""
              . "ORDER BY TF.FECREGHIS desc,PERFIL.ESTADOPERFIL asc";
        $res = $con->query($select);
        
        while($res2 = mssql_fetch_array($res)){
            $listas[] = array_map(utf8_encode,$res2); 
        }
        
        print_r(json_encode($listas));
        $con->cerrarConexion();
        
    }
    
}
